CSS Flexboxã®çž®å°ä¿æ°ãçè§£ã»å¶åŸ¡ããããã®å æ¬çã¬ã€ãã倿§ãªç»é¢ãµã€ãºãã³ã³ãã³ãã«å¯Ÿå¿ãããæè»ã§ã¬ã¹ãã³ã·ããªã¬ã€ã¢ãŠããå®çŸããŸãã
CSS Flexboxã®çž®å°ä¿æ°ã®èšç®ïŒãã¬ãã¯ã¹ã¢ã€ãã ã®ãµã€ãºçž®å°ã解説
FlexboxããŸãã¯Flexible Box Layout Moduleã¯ãéçºè
ãã³ã³ããå
ã®èŠçŽ ã®é
çœ®ãæ¹åãé åºãæ£ç¢ºã«å¶åŸ¡ã§ãã匷åãªCSSã¬ã€ã¢ãŠãããŒã«ã§ãããã¬ãã¯ã¹ã³ã³ããå
ã®ãã¬ãã¯ã¹ã¢ã€ãã ã®æ¯ãèããæ±ºå®ããäž»èŠãªããããã£ã®äžã€ãflex-shrinkã§ããflex-shrinkãã©ã®ããã«æ©èœããããçè§£ããããšã¯ãããŸããŸãªç»é¢ãµã€ãºãã³ã³ãã³ãã®é·ãã«åªé
ã«å¯Ÿå¿ãããã¬ã¹ãã³ã·ãã§é©å¿æ§ã®ãããŠã§ãã¬ã€ã¢ãŠããäœæããããã«äžå¯æ¬ ã§ãããã®èšäºã§ã¯ãflex-shrinkããããã£ã«ã€ããŠå
æ¬çã«è§£èª¬ããã³ã³ããå
ã®ä»ã®ãã¬ãã¯ã¹ã¢ã€ãã ã«å¯ŸããŠãã¬ãã¯ã¹ã¢ã€ãã ãã©ãã ãçž®å°ããããæ±ºå®ããæ¹æ³ã説æããŸãã
Flexboxçž®å°ä¿æ°ã®çè§£
flex-shrinkããããã£ã¯ããã¹ãŠã®ãã¬ãã¯ã¹ã¢ã€ãã ã®åèšãµã€ãºããã¬ãã¯ã¹ã³ã³ããå
ã®å©çšå¯èœãªã¹ããŒã¹ãè¶
ããå Žåã«ããã¬ãã¯ã¹ã¢ã€ãã ãã©ãã ãçž®å°ã§ããããç€ºãæ°å€ã§ããflex-shrinkã®å€ãé«ãã»ã©ããã®ã¢ã€ãã ã¯ä»ã®ã¢ã€ãã ã«æ¯ã¹ãŠããå€ãçž®å°ããããšãèš±ãããŸããéã«ãflex-shrinkã®å€ã0ã®å Žåã¯ãã¢ã€ãã ãå
šãçž®å°ããªããªããŸãã
flex-shrinkã®ããã©ã«ãå€ã¯1ã§ããããã¯ãããã©ã«ãã§ã¯ãå¿
èŠã«å¿ããŠãã¹ãŠã®ãã¬ãã¯ã¹ã¢ã€ãã ãã³ã³ããå
ã«åãŸãããã«æ¯äŸããŠçž®å°ããããšãæå³ããŸãããããããã®æ¯äŸçž®å°ã¯ãåã«flex-shrinkã®å€ã«åºã¥ããŠå©çšå¯èœãªã¹ããŒã¹ãåçã«åå²ããã»ã©åçŽã§ã¯ãããŸãããèšç®ã«ã¯ãflex-basisãšå
šäœã®ãªãŒããŒãããŒéãèæ
®ããå¿
èŠããããŸãã
èšç®æ¹æ³ïŒflex-shrinkã¯ã©ã®ããã«ãµã€ãºã®çž®å°ã決å®ããã
ãã¬ãã¯ã¹ã¢ã€ãã ã®å®éã®ãµã€ãºçž®å°ã¯ãããã€ãã®èŠå ã«åºã¥ããŠèšç®ãããŸãïŒ
- å©çšå¯èœãªã¹ããŒã¹ïŒãªãŒããŒãããŒïŒ: ããã¯ããã¬ãã¯ã¹ã¢ã€ãã ã®åèšãµã€ãºããã¬ãã¯ã¹ã³ã³ããã®ãµã€ãºãè¶
ããã¹ããŒã¹ã®éã§ããèšç®åŒã¯æ¬¡ã®éãã§ãïŒ
ãªãŒããŒãã㌠= ãã¬ãã¯ã¹ã¢ã€ãã ã®åèšãµã€ãº - ãã¬ãã¯ã¹ã³ã³ããã®ãµã€ãºã - å éçž®å°å€: åãã¬ãã¯ã¹ã¢ã€ãã ã®çž®å°å€ã¯ããã®
flex-basisã«ãã£ãŠéã¿ä»ããããŸããããã«ãããåãflex-shrinkå€ãæã€å Žåã§ãã倧ããã¢ã€ãã ãå°ããã¢ã€ãã ãããå€ãçž®å°ããããšãä¿èšŒãããŸããå éçž®å°å€ã¯æ¬¡ã®ããã«èšç®ãããŸãïŒå éçž®å°å€ = flex-shrink * flex-basisã - å éçž®å°å€ã®åèš: ããã¯ãã³ã³ããå
ã®ãã¹ãŠã®ãã¬ãã¯ã¹ã¢ã€ãã ã®å éçž®å°å€ã®åèšã§ãïŒ
å éçž®å°å€ã®åèš = Σ(flex-shrink * flex-basis)ã - çž®å°é: ããã¯ãç¹å®ã®ãã¬ãã¯ã¹ã¢ã€ãã ãçž®å°ããéã§ããæ¬¡ã®ããã«èšç®ãããŸãïŒ
çž®å°é = (flex-shrink * flex-basis) / å éçž®å°å€ã®åèš * ãªãŒããŒãã㌠- æçµçãªãµã€ãº: æåŸã«ããã¬ãã¯ã¹ã¢ã€ãã ã®æçµçãªãµã€ãºã¯ããã®
flex-basisããçž®å°éãåŒãããšã«ãã£ãŠæ±ºå®ãããŸãïŒ
æçµçãªãµã€ãº = flex-basis - çž®å°é
ãã®å 容ãäŸã§è©³ããèŠãŠãããŸãããïŒ
äŸïŒflex-shrinkã®åäœ
å¹ ã500pxã®ãã¬ãã¯ã¹ã³ã³ãããããã3ã€ã®ãã¬ãã¯ã¹ã¢ã€ãã ãæ¬¡ã®ããããã£ãæã£ãŠãããšããŸãïŒ
- ã¢ã€ãã 1:
flex-basis: 200px; flex-shrink: 1; - ã¢ã€ãã 2:
flex-basis: 150px; flex-shrink: 2; - ã¢ã€ãã 3:
flex-basis: 250px; flex-shrink: 1;
ã³ã³ããã«ååãªã¹ããŒã¹ããªãå Žåã®ããããã®ã¢ã€ãã ã®æçµçãªãµã€ãºãèšç®ããŠã¿ãŸãããïŒ
- ãã¬ãã¯ã¹ã¢ã€ãã ã®åèšãµã€ãº: 200px + 150px + 250px = 600px
- ãªãŒããŒãããŒ: 600px - 500px = 100px
- å éçž®å°å€:
- ã¢ã€ãã 1: 1 * 200px = 200
- ã¢ã€ãã 2: 2 * 150px = 300
- ã¢ã€ãã 3: 1 * 250px = 250
- å éçž®å°å€ã®åèš: 200 + 300 + 250 = 750
- çž®å°é:
- ã¢ã€ãã 1: (200 / 750) * 100px = 26.67px
- ã¢ã€ãã 2: (300 / 750) * 100px = 40px
- ã¢ã€ãã 3: (250 / 750) * 100px = 33.33px
- æçµçãªãµã€ãº:
- ã¢ã€ãã 1: 200px - 26.67px = 173.33px
- ã¢ã€ãã 2: 150px - 40px = 110px
- ã¢ã€ãã 3: 250px - 33.33px = 216.67px
ãã®äŸã§ã¯ãã¢ã€ãã 2ãæãé«ãå éçž®å°å€ãæã£ãŠããããïŒflex-shrinkå€ãé«ãããïŒãæãå€ãçž®å°ããŸãããã¢ã€ãã ã®æçµçãªãµã€ãºã¯ãçŸåš500pxã®ã³ã³ããå
ã«åãŸã£ãŠããŸãã
flex-shrinkãå¶åŸ¡ããäžè¬çãªãŠãŒã¹ã±ãŒã¹
flex-shrinkããããã£ãçè§£ãæäœããããšã¯ãããŸããŸãªã·ããªãªã§éèŠã§ãïŒ
- ã¬ã¹ãã³ã·ãããã²ãŒã·ã§ã³ã¡ãã¥ãŒ: ããã²ãŒã·ã§ã³ã¡ãã¥ãŒã§ã¯ãäžéšã®ã¢ã€ãã ïŒäŸïŒããŽïŒã®ãµã€ãºãç¶æãã€ã€ãä»ã®ã¡ãã¥ãŒã¢ã€ãã ã¯å°ããç»é¢ã§æ¯äŸããŠçž®å°ããããå ŽåããããŸããããã¯ãããŽã«
flex-shrink: 0ãèšå®ããä»ã®ã¡ãã¥ãŒã¢ã€ãã ã«flex-shrink: 1ïŒãŸãã¯ãã以äžïŒãèšå®ããããšã§å®çŸã§ããŸãã - ãã©ãŒã èŠçŽ : ãã©ãŒã å ã§ã¯ãã©ãã«ãšå ¥åãã£ãŒã«ããã³ã³ããå ã§ã©ã®ããã«çž®å°ããããå¶åŸ¡ã§ããŸããèªã¿ããããç¶æããããã«ãå ¥åãã£ãŒã«ããããã©ãã«ãããçž®å°ããããå ŽåããããŸãã
- ã«ãŒãã¬ã€ã¢ãŠã: ã«ãŒãããŒã¹ã®ã¬ã€ã¢ãŠãã§ã¯ã
flex-shrinkããããã£ã䜿çšããŠãã«ãŒãã®ã³ã³ãã³ãïŒäŸïŒã¿ã€ãã«ã説æãç»åïŒãç°ãªãã«ãŒããµã€ãºã«åªé ã«é©å¿ããããã«ã§ããŸããç»åãé床ã«çž®å°ããã®ãé²ããèŠèŠçãªååšæãä¿ã€ããšãã§ããŸãã - ããã¹ããªãŒããŒãããŒã®åŠç: ã³ã³ãããã¯ã¿åºãå¯èœæ§ã®ããããã¹ãã³ã³ãã³ããæ±ãå Žåã
flex-shrinkãoverflow: hiddenãtext-overflow: ellipsisã®ãããªä»ã®CSSããããã£ãšçµã¿åãããããšã§ãèŠèŠçã«é åçã§ãŠãŒã¶ãŒãã¬ã³ããªãŒãªããã¹ãåãæšãŠãäœæã§ããŸãã
å®è·µçãªäŸãšã³ãŒãã¹ãããã
flex-shrinkã广çã«äœ¿çšããæ¹æ³ã説æããããã«ãããã€ãã®å®è·µçãªäŸãèŠãŠãããŸãããã
äŸ1ïŒã¬ã¹ãã³ã·ãããã²ãŒã·ã§ã³ã¡ãã¥ãŒ
ããŽãšããã€ãã®ã¡ãã¥ãŒã¢ã€ãã ãããããã²ãŒã·ã§ã³ã¡ãã¥ãŒãèããŸããå°ããç»é¢ã§ã¯ããŽã®ãµã€ãºãç¶æãã€ã€ãã¡ãã¥ãŒã¢ã€ãã ãçž®å°ãããããšããŸãã
<nav class="nav-container">
<a href="#" class="logo">My Logo</a>
<ul class="nav-links">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
<style>
.nav-container {
display: flex;
justify-content: space-between;
align-items: center;
background-color: #f0f0f0;
padding: 10px;
}
.logo {
flex-shrink: 0; /* Prevent logo from shrinking */
font-weight: bold;
font-size: 20px;
}
.nav-links {
display: flex;
list-style: none;
margin: 0;
padding: 0;
}
.nav-links li {
margin-left: 20px;
}
.nav-links a {
text-decoration: none;
color: #333;
}
</style>
ãã®äŸã§ã¯ã.logoã¯ã©ã¹ã«flex-shrink: 0ãèšå®ããããšã§ãããã²ãŒã·ã§ã³ã¡ãã¥ãŒã®ã¹ããŒã¹ãéãããŠããå Žåã§ããããŽãå
ã®ãµã€ãºãç¶æããããšãä¿èšŒãããŸãã
äŸ2ïŒæè»ãªã³ã³ãã³ããæã€ã«ãŒãã¬ã€ã¢ãŠã
ã¿ã€ãã«ãšèª¬æã¯ç»é¢ãµã€ãºã«å¿ããŠçž®å°ã§ããäžæ¹ã§ãç»åã¯æå°ãµã€ãºãç¶æããã«ãŒãã¬ã€ã¢ãŠããäœæããŠã¿ãŸãããã
<div class="card">
<img src="image.jpg" alt="Card Image" class="card-image">
<div class="card-content">
<h2 class="card-title">Card Title</h2>
<p class="card-description">This is a brief description of the card content.</p>
</div>
</div>
<style>
.card {
display: flex;
flex-direction: column;
border: 1px solid #ccc;
border-radius: 5px;
overflow: hidden;
width: 300px;
}
.card-image {
width: 100%;
height: 200px;
object-fit: cover;
flex-shrink: 0; /* Prevent image from shrinking */
}
.card-content {
padding: 10px;
flex-grow: 1; /* Allow content to take up available space */
}
.card-title {
font-size: 18px;
margin-bottom: 5px;
}
.card-description {
font-size: 14px;
color: #666;
}
</style>
ãã®äŸã§ã¯ã.card-imageã¯ã©ã¹ã«flex-shrink: 0ãèšå®ããããšã§ãç»åãçž®å°ããã®ãé²ããèŠèŠçãªååšæãä¿ã¡ãŸãã.card-contentã¯ã©ã¹ã®flex-grow: 1ããããã£ã«ãããã¿ã€ãã«ãšèª¬æãæ®ãã®å©çšå¯èœãªã¹ããŒã¹ãå æããå¿
èŠã«å¿ããŠçž®å°ããããšãã§ããŸãã
flex-shrinkãšä»ã®Flexboxããããã£
flex-shrinkããããã£ã¯ãflex-growãflex-basisãªã©ã®ä»ã®Flexboxããããã£ãšé£æºããŠããã¬ãã¯ã¹ã¢ã€ãã ã®ãµã€ãºãšæ¯ãèããå
æ¬çã«å¶åŸ¡ããŸãã
- flex-grow: ãã®ããããã£ã¯ããã¬ãã¯ã¹ã³ã³ããã«äœåãªã¹ããŒã¹ãããå Žåã«ããã¬ãã¯ã¹ã¢ã€ãã ãã©ãã ãæ¡å€§ããããå®çŸ©ããŸãããã¹ãŠã®ã¢ã€ãã ãåã
flex-growå€ãæã€å Žåãå©çšå¯èœãªã¹ããŒã¹ãåçã«åãåããŸãã - flex-basis: ãã®ããããã£ã¯ãå©çšå¯èœãªã¹ããŒã¹ãåé
ãããåã®ãã¬ãã¯ã¹ã¢ã€ãã ã®åæãµã€ãºãæå®ããŸããé·ãïŒäŸïŒ
100pxïŒãããŒã»ã³ããŒãžïŒäŸïŒ50%ïŒããŸãã¯autoïŒã¢ã€ãã ã®ã³ã³ãã³ããµã€ãºã䜿çšïŒãæå®ã§ããŸãã - flex: ããã¯
flex-growãflex-shrinkãflex-basisãçµã¿åãããã·ã§ãŒããã³ãããããã£ã§ããäŸãã°ãflex: 1 1 0ã¯flex-grow: 1; flex-shrink: 1; flex-basis: 0;ãšåãã§ãã
ãããã®ããããã£ãã©ã®ããã«çžäºäœçšããããçè§£ããããšã¯ãè€éã§æè»ãªã¬ã€ã¢ãŠããå®çŸããããã«éèŠã§ããäŸãã°ãflex: 1ã䜿çšããããšã¯ãå©çšå¯èœãªã¹ããŒã¹ã«èªåçã«èª¿æŽãããçå¹
ã®åãäœæããããã®äžè¬çãªãã¯ããã¯ã§ãã
ãã©ãŠã¶ã®äºææ§ãšãã©ãŒã«ããã¯
Flexboxã¯ãChromeãFirefoxãSafariãEdgeãã¢ãã€ã«ãã©ãŠã¶ãªã©ãçŸä»£ã®ãã©ãŠã¶å šäœã§åªãããµããŒãã享åããŠããŸããããããå€ããã©ãŠã¶ãèæ ®ããå¿ èŠã«å¿ããŠãã©ãŒã«ããã¯ãæäŸããããšã¯åžžã«è¯ãç¿æ £ã§ãã
FlexboxããµããŒãããŠããªãå€ããã©ãŠã¶ã«ã¯ã次ã®ãããªä»£æ¿ã¬ã€ã¢ãŠãæè¡ã䜿çšã§ããŸãïŒ
- Floats: Flexboxã»ã©æè»ã§ã¯ãããŸããããfloatã䜿çšããŠåºæ¬çãªåã¬ã€ã¢ãŠããäœæã§ããŸãã
- Inline-block: ãã®æè¡ã«ãããæ°Žå¹³ã«æŽåããèŠçŽ ãäœæã§ããŸãããééãšé 眮ã®ç®¡çãé£ããå ŽåããããŸãã
- CSS Grid: 匷åãªã°ãªããããŒã¹ã®ã¬ã€ã¢ãŠããæäŸãããããçŸä»£çãªã¬ã€ã¢ãŠãã·ã¹ãã ã§ãããã ãããã¹ãŠã®å€ããã©ãŠã¶ã§ãµããŒããããŠããããã§ã¯ãããŸããã
ãŸããCSSæ©èœã¯ãšãªïŒ@supportsïŒã䜿çšããŠFlexboxã®ãµããŒããæ€åºãããµããŒãããŠãããã©ãŠã¶ã«ã®ã¿Flexboxã¹ã¿ã€ã«ãé©çšããããšãã§ããŸãã
äžè¬çãªflex-shrinkåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
flex-shrinkã¯åŒ·åãªããããã£ã§ãããäºæããªãåäœãåŒãèµ·ããããšããããŸããããã§ã¯ãäžè¬çãªåé¡ãšãã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°æ¹æ³ãããã€ã玹ä»ããŸãïŒ
- ã¢ã€ãã ãæåŸ
éãã«çž®å°ããªã: ãã¬ãã¯ã¹ã³ã³ããã«
display: flexãŸãã¯display: inline-flexãèšå®ãããŠããããšã確èªããŠãã ããããŸããflex-basisã®å€ãã¢ã€ãã ã®çž®å°ã劚ããŠããªãã確èªããŠãã ãããã¢ã€ãã ã«åºå®ã®å¹ ãé«ããããå Žåãflex-shrink: 1ã§ãçž®å°ããªãããšããããŸãã - äžåäžãªçž®å°: ãã¹ãŠã®ãã¬ãã¯ã¹ã¢ã€ãã ã®
flex-shrinkãšflex-basisã®å€ã確èªããŠãã ãããçž®å°ã¯å éçž®å°å€ïŒflex-shrink * flex-basisïŒã«æ¯äŸããããããããã®å€ã®éããäžåäžãªçž®å°ã«ã€ãªããå¯èœæ§ããããŸãã - ã³ã³ãã³ãã®ãªãŒããŒãããŒ: ãã¬ãã¯ã¹ã¢ã€ãã å
ã®ã³ã³ãã³ããã¢ã€ãã ã®æçµãµã€ãºãè¶
ãããšããªãŒããŒãããŒãçºçããå¯èœæ§ããããŸãã
overflow: hiddenãtext-overflow: ellipsisã®ãããªCSSããããã£ã䜿çšããŠãããã¹ãã®ãªãŒããŒãããŒãåªé ã«åŠçããŠãã ãããç»åã®å Žåã¯ãobject-fit: coverãobject-fit: containã䜿çšããŠãã³ã³ããå ã§ç»åãã©ã®ããã«ã¹ã±ãŒãªã³ã°ãããããå¶åŸ¡ããŸãã - äºæããªãæ¹è¡: ããã¹ãã³ã³ãã³ããæ±ã£ãŠããå Žåãããã¹ããçž®å°ãããšäºæããªãæ¹è¡ãçºçããããšããããŸããããã¹ãã®æãè¿ããé²ãã«ã¯
white-space: nowrapããããã£ã䜿çšããããããã¹ãã«ããå€ãã®ã¹ããŒã¹ã確ä¿ããããã«flex-shrinkã®å€ã調æŽããŸãã
é«åºŠãªãã¯ããã¯ãšãã¹ããã©ã¯ãã£ã¹
flex-shrinkã广çã«äœ¿çšããããã®é«åºŠãªãã¯ããã¯ãšãã¹ããã©ã¯ãã£ã¹ãããã€ã玹ä»ããŸãïŒ
- Flexboxãšã¡ãã£ã¢ã¯ãšãªã®çµã¿åãã: ã¡ãã£ã¢ã¯ãšãªã䜿çšããŠãããŸããŸãªç»é¢ãµã€ãºã«åºã¥ããŠ
flex-shrinkã®å€ã調æŽããŸããããã«ãããåºç¯ãªããã€ã¹ã«é©å¿ããéåžžã«ã¬ã¹ãã³ã·ããªã¬ã€ã¢ãŠããäœæã§ããŸãã - ãã€ã¯ãã¬ã€ã¢ãŠããžã®Flexboxã®å©çš: Flexboxã¯ããŒãžå šäœã®ã¬ã€ã¢ãŠããäœæããããã ãã®ãã®ã§ã¯ãããŸããããã¿ã³ããã©ãŒã ãããã²ãŒã·ã§ã³èŠçŽ ãªã©ãã³ã³ããŒãã³ãå ã®ããå°ãã屿çãªã¬ã€ã¢ãŠãã«ã䜿çšã§ããŸãã
- ãFlexbox Holy Grailãã¬ã€ã¢ãŠãã®æŽ»çš: Flexboxã䜿çšãããšããHoly Grailãã¬ã€ã¢ãŠãïŒããããŒãããã¿ãŒããµã€ãããŒãã³ã³ãã³ãïŒããfloatãä»ã®åŸæ¥ã®ã¬ã€ã¢ãŠãæè¡ã«é Œãããšãªãç°¡åã«äœæã§ããŸãã
- ã¢ã¯ã»ã·ããªãã£ãžã®é æ ®: Flexboxã¬ã€ã¢ãŠããé害ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠã¢ã¯ã»ã¹å¯èœã§ããããšã確èªããŠãã ãããã»ãã³ãã£ãã¯HTMLã䜿çšããç»åã«ä»£æ¿ããã¹ããæäŸããããŒããŒãããã²ãŒã·ã§ã³ãè«ççã§çŽæçã§ããããšãä¿èšŒããŸãã
Flexboxãšã°ããŒãã«ãã¶ã€ã³ã·ã¹ãã
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«ãã¶ã€ã³ããå ŽåãFlexboxåºæã®æè»æ§ã¯éåžžã«äŸ¡å€ããããŸãããã®çç±ã¯æ¬¡ã®éãã§ãïŒ
- ç°ãªãããã¹ãé·ãžã®é©å¿æ§: èšèªã«ãã£ãŠåé·æ§ã¯ç°ãªããŸããäŸãã°ããã€ãèªã®åèªã¯è±èªã®åçèªãããããªãé·ããªãããšããããŸããFlexboxã䜿çšãããšãã¬ã€ã¢ãŠãããããã®ããªãšãŒã·ã§ã³ã«å£ããããšãªãé©å¿ã§ããŸãã
- å³ããå·ŠïŒRTLïŒãžã®å¯Ÿå¿: Flexboxã¯ã¢ã©ãã¢èªãããã©ã€èªã®ãããªRTLèšèªãèªåçã«åŠçããŸããã¢ã€ãã ã®æ¹åãå転ãããããLTRãšRTLã®äž¡æ¹ã®ã³ã³ããã¹ãã§ã·ãŒã ã¬ã¹ã«æ©èœããã¬ã€ã¢ãŠããç°¡åã«äœæã§ããŸãã
- 倿§ãªæåã»ããã®åŠç: Flexboxã¯ãç¹å®ã®ãã©ã³ãããšã³ã³ãŒãã£ã³ã°ã®èª¿æŽãå¿ èŠãšããã«ãã©ãã³æåãããªã«æåãäžåœèªãæ¥æ¬èªãªã©ãããŸããŸãªæåã»ãããåŠçã§ããŸãã
- ããŒã«ã©ã€ãŒãŒã·ã§ã³ã«é¢ããèæ ®äºé : ãŠã§ããµã€ããããŒã«ã©ã€ãºããéãã³ã³ãã³ãã®é·ãã¯å€§å¹ ã«å€ããå¯èœæ§ããããŸããFlexboxã¯ãã³ã³ãã³ããç°ãªãèšèªã«ç¿»èš³ãããå Žåã§ããã¬ã€ã¢ãŠãã®æŽåæ§ãç¶æããã®ã«åœ¹ç«ã¡ãŸãã
äŸïŒåœéçãªããã²ãŒã·ã§ã³ã¡ãã¥ãŒ
è±èªãšãã€ãèªã®äž¡æ¹ããµããŒãããå¿
èŠãããããã²ãŒã·ã§ã³ã¡ãã¥ãŒãèããŠã¿ãŸãããããã€ãèªã®ç¿»èš³ã¯é·ããªãå¯èœæ§ããããå°ããç»é¢ã§ã¡ãã¥ãŒã厩ããåå ãšãªããããããŸãããflex-shrinkã䜿çšããããšã§ãã¡ãã¥ãŒã¢ã€ãã ãé·ããã€ãèªã®ããã¹ãã«åªé
ã«é©å¿ããããšãä¿èšŒã§ããŸãã
ã°ããŒãã«ãªFlexboxãã¶ã€ã³ã®ããã®ãã¹ããã©ã¯ãã£ã¹ïŒ
- çžå¯Ÿåäœã®äœ¿çš:
pxã®ãããªåºå®åäœã®ä»£ããã«ãemãremãããŒã»ã³ããŒãžã®ãããªçžå¯Ÿåäœã䜿çšããŸããããã«ãããã¬ã€ã¢ãŠãããŠãŒã¶ãŒã®ãã©ã³ããµã€ãºãç»é¢è§£ååºŠã«æ¯äŸããŠã¹ã±ãŒãªã³ã°ã§ããŸãã - ç°ãªãèšèªã§ã®ãã¹ã: ã¬ã€ã¢ãŠããæ£ããé©å¿ããããšã確èªããããã«ãåžžã«ç°ãªãèšèªã§ãã¹ãããŠãã ãããããŒã«ã©ã€ãŒãŒã·ã§ã³ãã©ãããã©ãŒã ã䜿çšããããæåã§ã³ã³ãã³ããããã€ãã®èšèªã«ç¿»èš³ããŸãã
- RTLã¬ã€ã¢ãŠãã®èæ
®: ãŠã§ããµã€ããRTLèšèªããµããŒãããå¿
èŠãããå ŽåãRTLã¢ãŒãã§ã¬ã€ã¢ãŠãããã¹ãããŠåé¡ãç¹å®ãä¿®æ£ããŸãã
<html>èŠçŽ ã«dir="rtl"屿§ã䜿çšããŠRTLã¢ãŒãã«åãæ¿ããããšãã§ããŸãã - CSSè«çããããã£ã®äœ¿çš:
margin-inline-startãpadding-inline-endã®ãããªCSSè«çããããã£ã¯ãæžåæ¹åã«èªåçã«é©å¿ããŸããmargin-leftãpadding-rightã®ãããªç©çããããã£ã®ä»£ããã«ãããã®ããããã£ã䜿çšããŠãLTRãšRTLã®äž¡æ¹ã®ã³ã³ããã¹ãã§ã·ãŒã ã¬ã¹ã«æ©èœããã¬ã€ã¢ãŠããäœæããŸãã
çµè«ïŒæè»ãªã¬ã€ã¢ãŠãã®ããã«flex-shrinkããã¹ã¿ãŒãã
flex-shrinkããããã£ã¯ãããŸããŸãªç»é¢ãµã€ãºãã³ã³ãã³ãã®é·ãã«é©å¿ãããæè»ã§ã¬ã¹ãã³ã·ããªã¬ã€ã¢ãŠããäœæããããã®åŒ·åãªããŒã«ã§ããçž®å°ä¿æ°ãã©ã®ããã«èšç®ãããä»ã®Flexboxããããã£ãšã©ã®ããã«çžäºäœçšããããçè§£ããããšã§ããã¬ãã¯ã¹ã¢ã€ãã ã®ãµã€ãºãšæ¯ãèããæ£ç¢ºã«å¶åŸ¡ã§ããŸããã¬ã¹ãã³ã·ããªããã²ãŒã·ã§ã³ã¡ãã¥ãŒãã«ãŒãããŒã¹ã®ã¬ã€ã¢ãŠãããŸãã¯è€éãªã°ãªããã·ã¹ãã ãæ§ç¯ããå Žåã§ããflex-shrinkããã¹ã¿ãŒããããšã¯ãèŠèŠçã«é
åçã§ãŠãŒã¶ãŒãã¬ã³ããªãŒãªãŠã§ãäœéšãäœæããããã«äžå¯æ¬ ã§ãã
ãã©ãŠã¶ã®äºææ§ãèæ ®ããå¿ èŠã«å¿ããŠãã©ãŒã«ããã¯ãæäŸããã¬ã€ã¢ãŠããããŸããŸãªãã©ãŠã¶ãããã€ã¹ã§æåŸ éãã«æ©èœããããšã確èªããããã«åŸ¹åºçã«ãã¹ãããããšãå¿ããªãã§ãã ãããç·Žç¿ãšå®éšãéããããšã§ãFlexboxã®å šãŠã®ããã³ã·ã£ã«ãåŒãåºãããŠãŒã¶ãŒã®ããŒãºã«å¿ããèŠäºã§é©å¿æ§ã®ãããŠã§ãã¬ã€ã¢ãŠããäœæã§ããŸãã
ãããªãåŠç¿ãªãœãŒã¹
- MDN Web Docs: Mozilla Developer Networkã¯ãFlexboxãšãã®ããããã£ã«é¢ããå æ¬çãªããã¥ã¡ã³ããæäŸããŠããŸãïŒ https://developer.mozilla.org/en-US/docs/Web/CSS/flex-shrink
- CSS-Tricks: CSS-Tricksã¯ãã€ã³ã¿ã©ã¯ãã£ããªäŸãå«ãFlexboxã®è©³çްãªã¬ã€ããæäŸããŠããŸãïŒ https://css-tricks.com/snippets/css/a-guide-to-flexbox/
- Flexbox Froggy: Flexboxã®æŠå¿µãåŠã¶ããã®æ¥œããã€ã³ã¿ã©ã¯ãã£ããªã²ãŒã ïŒ https://flexboxfroggy.com/
- Flexbox Zombies: Flexboxã®ã¹ãã«ããã¹ã¿ãŒããããã®ããäžã€ã®é åçãªã²ãŒã ïŒ https://mastery.games/p/flexboxzombies